/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEmpleado;
import GUI.Jefe.AdminBibliotecarios.PanelRegistrarBibliotecario;
import LogicaNegocio.Empleados.Bibliotecario;
import LogicaNegocio.Validacion.VEmpleado;
import MainBiblioSoft.BiblioSoft;
import javax.persistence.RollbackException;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos
 * para el registro de bibliotecarios en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlRegistrarBibliotecario.java
 * @version 1.0
 * Fecha: dom may  9 00:40:32 COT 2010
 */


public class ControlRegistrarBibliotecario {

    //Atributos de clase
    private PanelRegistrarBibliotecario panelRegistrar;
    private Bibliotecario bibliotecario;
    private ManagerEmpleado gestorEmpleado;


    public ControlRegistrarBibliotecario(PanelRegistrarBibliotecario panelRegistrar) {
        this.panelRegistrar = panelRegistrar;
        gestorEmpleado = new ManagerEmpleado();
        registrar();
    }

    private void registrar() {
        try {
            //crea el objeto empleado bibliotecario
            bibliotecario = new Bibliotecario();
            //se cambian los datos del bibliotecario con las que se ingresan en el formulario
            bibliotecario.setCedula(Integer.parseInt(panelRegistrar.textFieldCedula.getText()));
            bibliotecario.setCedulaEmpleadoJefe(BiblioSoft.jefeBibliotecario.getCedula());
            bibliotecario.setPassword(panelRegistrar.textFieldCedula.getText());
            bibliotecario.setPrimerApellido(panelRegistrar.textFieldPrimerApellido.getText());
            bibliotecario.setPrimerNombre(panelRegistrar.textFieldPrimerNombre.getText());
            bibliotecario.setSegundoApellido(panelRegistrar.textFieldSegundoApellido.getText());
            bibliotecario.setSegundoNombre(panelRegistrar.textFieldSegundoNombre.getText());
            bibliotecario.setDireccion(panelRegistrar.textFieldDireccion.getText());
            bibliotecario.setTelefono(panelRegistrar.textFieldTelefono.getText());
            bibliotecario.setUniversidad(panelRegistrar.textFieldUniversidad.getText());
            bibliotecario.setCargo("Bibliotecario");
            bibliotecario.setVinculado(true);
            //se valida el empleado bibliotecario
            new VEmpleado(bibliotecario);
            //envia el objeto bibliotecario para su persistencia
            gestorEmpleado.crearEmpleado(bibliotecario);
            //Si no ocurren excepciones limpia los campos de texto
            panelRegistrar.textFieldCedula.setText("");
            panelRegistrar.textFieldDireccion.setText("");
            panelRegistrar.textFieldPrimerApellido.setText("");
            panelRegistrar.textFieldPrimerNombre.setText("");
            panelRegistrar.textFieldSegundoApellido.setText("");
            panelRegistrar.textFieldSegundoNombre.setText("");
            panelRegistrar.textFieldTelefono.setText("");
            panelRegistrar.textFieldUniversidad.setText("");
            JOptionPane.showMessageDialog(panelRegistrar, "El Bibliotecario ha sido registrado con exito", "Registro", JOptionPane.PLAIN_MESSAGE);
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "El campo numero de cedula solo debe contener un valor numerico", "Numero Cedula", JOptionPane.ERROR_MESSAGE);
        } catch(RollbackException ex){
            JOptionPane.showMessageDialog(panelRegistrar, "En el sistema ya existe un bibliotecario con numero de cedula "+bibliotecario.getCedula(), "Numero Cedula", JOptionPane.ERROR_MESSAGE);
        } catch (VEmpleado ex) {
            JOptionPane.showMessageDialog(panelRegistrar, ex.getMessage(), "Error Registro", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}
